import java.util.HashMap;
import java.util.Map;
import java.util.PriorityQueue;

/*
 * @lc app=leetcode.cn id=347 lang=java
 *
 * [347] 前 K 个高频元素
 */

// @lc code=start
class Solution {
    public int[] topKFrequent(int[] nums, int k) {
        Map<Integer,Integer>map=new HashMap<>();
        for(int n:nums){
            map.put(n,map.getOrDefault(n, 0)+1);
        }//统计频率
        PriorityQueue<Map.Entry<Integer,Integer>> q=new PriorityQueue<>((o1,o2)->o2.getValue()-o1.getValue());//大顶堆
        for(Map.Entry<Integer,Integer> entry:map.entrySet()){
           q.offer(entry);  
        }
        //返回
        int[] res=new int[k];
        for(int i=0;i<k;i++){
            res[i]=q.poll().getKey();
        }
        return res;
    }
}
// @lc code=end

